package br.com.requisicao.compra.dao.impl;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import br.com.requisicao.compra.canonico.Fornecedor;
import br.com.requisicao.compra.canonico.PedidoCotacaoProduto;
import br.com.requisicao.compra.canonico.RequisicaoCompraProduto;
import br.com.requisicao.compra.dao.IPedidoCotacaoProdutoDAO;
import br.com.requisicao.compra.util.HibernateUtil;

public class PedidoCotacaoProdutoDAO implements IPedidoCotacaoProdutoDAO {

	public PedidoCotacaoProduto salvar(PedidoCotacaoProduto pedidoCotacaoProduto) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			session.save(pedidoCotacaoProduto);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void update(PedidoCotacaoProduto pedidoCotacaoProduto) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			session.update(pedidoCotacaoProduto);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public PedidoCotacaoProduto excluir(
			PedidoCotacaoProduto pedidoCotacaoProduto) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			// session.setCacheMode(CacheMode.IGNORE);
			session.delete(pedidoCotacaoProduto);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public PedidoCotacaoProduto obtemPedidoCotacaoPorIdRequisicaoCompra(Long codigo) {
		Session session = HibernateUtil.getSession();
		PedidoCotacaoProduto pedidoCotacaoProduto = null;
		try {

			pedidoCotacaoProduto = (PedidoCotacaoProduto) session.createCriteria(PedidoCotacaoProduto.class).
					add(Restrictions.eq("requisicaoCompra.codigo", codigo)).uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}

		return pedidoCotacaoProduto;
	}

	public PedidoCotacaoProduto obtemPedidoCotacaoPorId(Long codigo) {
		Session session = HibernateUtil.getSession();
		PedidoCotacaoProduto pedidoCotacaoProduto = null;
		try {
			pedidoCotacaoProduto = (PedidoCotacaoProduto) session.get(
					PedidoCotacaoProduto.class, codigo);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}

		return pedidoCotacaoProduto;
	}
}
